home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
UTILITY
/
TLB_V211.ARJ
/
LASTBYTE.DOC
< prev
next >
Wrap
Text File
|
1992-08-11
|
91KB
|
2,343 lines
THE LAST BYTE MEMORY MANAGER (tm)
An Upper Memory Manager for MS-DOS
Version 2.11
Copyright (C) 1990-92
All Rights Reserved
by
KEY SOFTWARE PRODUCTS
440 Ninth Avenue
Menlo Park, California 94025
415-364-9847
The Last Byte Memory Manager is a trademark of Key Software Products.
MS-DOS and Windows 3.0 are trademarks of Microsoft Corporation.
DR-DOS is a trademark of Digital Research Incorporated.
4DOS is a trademark of J.P. Software.
Hyperdisk is a trademark of HyperWare.
TABLE OF CONTENTS
CHAPTER 1 - INTRODUCTION ........................... 1
1.1 Seven Important Advantages ................... 1
CHAPTER 2 - GETTING A QUICK START ..................... 3
2.1 Checking Compatibility Using CHIPSET .......... 3
2.2 Making a Demo Diskette for Testing .............. 3
2.3 Viewing Upper Memory with HIGHMEM .............. 5
CHAPTER 3 - LASTBYTE.SYS COMMAND LINE OPTIONS ......... 7
3.1 BANKSWITCH=<base>:<size> ................... 7
3.2 CACHE=<kbytes> ............................. 8
3.3 DOS=<base>:<size> .......................... 8
3.4 EXCLUDE=<base>:<size> ...................... 8
3.5 KEY=<AccessKey> ............................ 8
3.6 MOVE=VIDEOBIOS ............................. 9
3.7 MOVE=MAINBIOS .............................. 9
3.7.1 The ADDHOLES suboption .................. 9
3.8 MOVE=OVERLAY ............................... 9
3.9 MOVE=XBDA .................................. 9
3.10 NAME=<RegisteredUserName> ................. 9
3.11 PHYSICAL=<MemoryController> ............... 10
3.11.1 The OVERRIDE suboption ................. 10
3.11.2 The NOEMS suboption .................... 10
3.12 RESTRICT=<ab> <cd> <ef> ..................... 10
3.13 SHADOW=<base>:<size> ...................... 11
3.14 TEXT=<Attribute> .......................... 12
3.15 The ? (question mark) Option .................. 12
CHAPTER 4 - HIGHDRVR AND HIGHTSR COMMAND LINE OPTIONS ... 13
4.1 HIGHDRVR Command Line Syntax .................. 13
4.2 HIGHTSR Command Line Syntax ................... 13
4.3 The /SIZE Option ............................. 14
4.4 Measuring Load Requirements Using /SIZE ........ 14
4.5 Achieving Best Fit Using /SIZE:n1 .............. 15
4.6 Borrowing Memory Using /SIZE:n1 n2 ............. 15
4.7 The /LOW Option .............................. 16
4.8 The /RESTRICT Option ......................... 16
4.9 The /!NOPAUSE Option ......................... 16
4.10 The /NOENV Option (HIGHTSR only) .............. 17
CHAPTER 5 - HIGHUMM.SYS: A UMB PROVIDER ............... 18
5.1 The /REPLACE Option .......................... 18
5.2 The /NOSPLIT Option .......................... 18
5.3 The /RESTRICT Option ......................... 19
5.4 Limiting UMB Memory .......................... 19
CHAPTER 6 - SPECIAL CONSIDERATIONS .................. 20
6.1 Specifying Command Line Options with Indirect Files 20
6.2 Using the DOS=F000:32 Option .................. 20
6.3 Video Display RAM above 640k ................... 21
TABLE OF CONTENTS
6.4 Video Adapter Bios ROMs ....................... 22
6.5 LASTBYTE.SYS and Expanded Memory .............. 22
6.6 Fine-Tuning your Adapter Hardware Configuration 23
CHAPTER 7 - USE WITH OTHER SOFTWARE ................... 25
7.1 Microsoft's FASTOPEN and MODE programs ......... 25
7.2 Microsoft's SHARE program .................... 25
7.3 Microsoft's MS-DOS 5.0 ....................... 26
7.3.1 Using DEVICEHIGH and LOADHIGH ............ 27
7.3.2 Using HIGHDRVR and HIGHTSR ............... 27
7.4 Microsoft Windows ........................... 28
7.4.1 Modifying the Windows SYSTEM.INI File ..... 28
7.4.2 Positioning an EMS Page Frame ............. 29
7.4.3 "Unsupported Data Configuration" ........ 29
7.4.4 HIGHMEM and Windows 386 Enhanced Mode ...... 30
7.5 HyperWare's HyperDisk ....................... 30
7.6 J.P. Software's 4DOS ......................... 30
7.7 David Hamilton's BUFFIT ...................... 31
7.8 Charles Lazo's WAS ........................... 31
7.9 Philip Gardner's DOSMAX ...................... 31
APPENDIX 1 - HOW TO REACH US .......................... 33
APPENDIX 2 - ACKNOWLEDGEMENTS ...................... 35
APPENDIX 3 - LIMITED WARRANTY ....................... 36
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 1
CHAPTER 1 - INTRODUCTION
The Last Byte Memory Manager is a collection of software that
can provide up to 384k of additional memory to your computer in
the upper memory area between 640k and 1 meg. It does this by
using shadow ram memory, existing fixed read/write (RAM) memory,
or by mapping expanded memory (EMS) pages into the upper area.
With The Last Byte Memory Manager, device drivers, terminate and
stay resident (TSR) programs, and more can be moved up into
upper memory, leaving more conventional memory available for
your application programs. Depending on your hardware, you may
also be able to extend the total conventional memory from 640k
to as much as 736k.
The Last Byte Memory Manager package also includes several
advanced utility programs that can move the master environment,
DOS FILES, DOS BUFFERS into upper memory. Other advanced
utilities create ram disks, print spoolers, command line recall
(history) buffers, emulated expanded memory, and TSR "markers"
(to facilitate TSR removal). Best of all, these utilities can
even use shadow ram memory which has been disabled (refered to
as "Bank-Switch" memory) by the presence of the display buffer,
unshadowed read-only memories (ROMs), and other adapter cards.
1.1 Seven Important Advantages
The Last Byte Memory Manager offers seven significant advantages
over other MS-DOS Upper Memory Managers:
1. The Last Byte Memory Manager leaves no "stubs" in
conventional memory.
2. The Last Byte Memory Manager will work with any
processor chip, even the 8088 used in the original
IBM PC. Many memory managers require a 386 cpu or
better.
3. The Last Byte Memory Manager doesn't use protected
mode. Unlike those memory managers that do, The
Last Byte Memory Manager is totally compatible
with any protected mode software, not just
Microsoft Windows.
4. The Last Byte Memory Manager doesn't require any
extended memory. Some memory managers depend on
the processor's ability to remap physical memory
from above 1MB into the upper memory area.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 2
5. On motherboards that use one of the supported
memory controller chips, The Last Byte Memory
Manager, unlike all other memory managers, can use
the unused shadow ram normally disabled by the
display buffer, unshadowed ROMs or adapter cards.
This gives it the unique ability to use all 384k
of upper memory!
6. The Last Byte Memory Manager does not slow down
the performance of your computer, because it does
not incur the 5-10% execution overhead inherent in
protected mode.
7. On motherboards that use one of the supported
memory controller chips, The Last Byte Memory
Manager can extend conventional memory using
regular full-speed motherboard memory rather than
using the EGA/VGA display buffer. (The display
buffer memory of some EGA/VGA adapter cards can be
as much as six times slower than regular memory.)
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 3
CHAPTER 2 - GETTING A QUICK START
The first thing to do is to be sure that The Last Byte Memory
Manager will work on your computer. Fundamentally, the
requirements are DOS version 3.1 or later and some method of
implementing memory in the upper memory area between 640k and 1
meg. Any Intel (or Intel-compatible) processor will do,
including the original Intel 8088 cpu. No extended memory is
required.
2.1 Checking Compatibility Using CHIPSET
The CHIPSET program is designed to determine if The Last Byte
Memory Manager is compatible with your computer. To run
CHIPSET, simply enter its name on the command line:
A>CHIPSET
If successful, CHIPSET will give you the option of automatically
linking to the INSTALL program to either create a demo diskette
(as described below) or to install the software on your hard
disk. For more detailed information on the CHIPSET program and
system requirements, consult the file CHIPSET.DOC.
2.2 Making a Demo Diskette for Testing
To install The Last Byte Memory Manager on a floppy diskette for
testing, perform the following three steps:
Step 1: Use the MS-DOS FORMAT command with the /S
option to prepare a bootable floppy disk.
You will need this in Step 2.
Step 2: Run the CHIPSET program. If it succeeds, it
will ask you "Do you want to run the INSTALL
program now?". Answer yes. When it displays
the first screen of the INSTALL program,
select the first option, "Creating a
demonstration diskette" and follow the
prompts.
Step 3: Once you have created your demonstration
diskette, press Ctrl-Alt-Del to reboot your
computer from the diskette.
When your computer reboots, LASTBYTE.SYS will pause thirty
seconds and then require a keypress to proceed. The pause and
the keypress are removed when you purchase and install an access
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 4
key (see ORDERFRM.DOC). There are, however, no other
restrictions on the unlicensed version - it is a fully
functional version of the software.
If everything goes ok during the boot, you'll see a sign-on box
that looks something like the following:
╔═══════════════════════════════════════════════════════════════════╗
║ THE LAST BYTE MEMORY MANAGER (tm) Version 2.11a ║
║ Copyright (C) 1990-92, Key Software Products, All Rights Reserved ║
║ « You can LICENSE a copy of this software for only $29.95! » ║
╟───────────────────────────────────────────────────────────────────╢
║ 50.0 Mhz 80486 with 256KB Cache and OPTi Electronics 82C495 ║
╟───────────────────────────────────────────────────────────────────╢
║ Address Range Size Width Bandwidth Description ║
║ 256 KB 128 bits 200.0 MB/Sec Secondary CPU Cache ║
║ 00000-9FFFF 640 KB 32 bits 97.6 MB/Sec Conventional Memory ║
║ C0000-EFFFF 192 KB 32 bits 97.6 MB/Sec Shadow Ram Memory ║
║ A0000-AFFFF 64 KB 16 bits 1.7 MB/Sec VGA Graphics Buffer ║
║ B8000-BFFFF 32 KB 16 bits 1.7 MB/Sec VGA Color Text Bfr ║
║ C0000-C7FFF 32 KB 8 bits 1.2 MB/Sec VGA Adapter Bios ║
║ C8000-C97FF 6 KB 8 bits 1.2 MB/Sec Fixed Disk Bios ║
║ C9800-C9BFF 1 KB 8 bits 1.2 MB/Sec Fixed Disk Ram ║
║ F0000-FFFFF 64 KB 8 bits 2.0 MB/Sec AMI Bios (06/06/91) ║
╟───────────────────────────────────────────────────────────────────╢
║ Conv:640k High-DOS:144k Bank-Switch:16k Shadowed:96k Excluded:128k║
╟───────────────────────────────────────────────────────────────────╢
║ The Last Byte Memory Manager is a trademark of Key Software Prod. ║
╚═══════════════════════════════════════════════════════════════════╝
If your computer stops before displaying the box shown above, or
if it fails to operate properly after booting, there are two
possible reasons:
1. CHIPSET identified the wrong memory controller.
Try running CHIPSET again, and this time manually
test each of the menu options, noting if more than
one chipset is identified. If so, then run the
INSTALL program again for one of the other
chipsets that it finds.
2. The Last Byte Memory Manager failed to recognize
one of your installed adapters that uses some
portion of the upper memory address space. If
this happens, you'll probably need to use an
EXCLUDE option on the LASTBYTE.SYS command line to
manually disable the corresponding region(s) where
conflict occurs.
To temporarily get around either of these problems, you can
reboot and manually bypass execution of all The Last Byte Memory
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 5
Manager software by simultaneously holding down the <alt> key,
the <ctrl> key, and either the <leftshift> or <rightshift> key
during the boot sequence.
If The Last Byte Memory Manager installs and AUTOEXEC.BAT
finishes properly, then your display will be filled with the
output of the HIGHMEM program and the current time will be
displayed in inverse video in the upper left-hand corner. This
verifies that HIGHTSR has successfully loaded both the device
driver ANSI.SYS and the TSR program CLOCK.EXE into upper memory
and that they are operating properly.
To exit from HIGHMEM, simply press the Esc key.
Once you are convinced that The Last Byte Memory Manager is
working satisfactorily, you may install it on your hard disk by
making drive C: the current drive by entering
C:
and rerunning CHIPSET or INSTALL.
2.3 Viewing Upper Memory with HIGHMEM
Depending on what adapter cards you have installed, HIGHMEM's
output should look something like that shown below.
Bracketed numbers in the High-DOS column (e.g., "[141,136]")
indicate free memory that is available for additional device
drivers and TSRs. Bracketed numbers in the "Bank-Switch" column
(if any) indicate free memory that can be used by some of the
advanced utilities contained in the file TLB-A211.ZIP; this
memory can be used to implement a ram disk, a print spooler,
emulated EMS memory, or TSR markers.
Note: HIGHMEM automatically senses whether you have a color or
monochrome display to determine how to present data on the
screen. However, you may force the mode using one of the /MONO,
/COLOR, or /LCD command line options.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 6
HIGHMEM v2.11a (C) Key Software Products 1990-92. All Rights Reserved.
MCB Hex Address Description [Type] <Mark> High-DOS Bnk-Swtch Total
──── ─────────── ───────────────────────── ──────── ───────── ───────
CC00 A0000-CBFFF Reserved Memory Group
CC02 A0000-AFFFF ╠═16-bit VGA Graphics Buffer 65,536
CC04 B0000-B7FFF ╠═Unavailable 32,768
CC06 B8000-BFFFF ╠═16-bit VGA Color Text Buffer 32,768
CC08 C0000-C7FFF ╠═Shadowed 8-bit VGA Bios Rom 32,768
CC0A C8000-C97FF ╠═8-bit Fixed Disk Adapter Bios [ 6,144][ 6,144]
CC0C C9800-C9BFF ╠═8-bit Fixed Disk Adapter Ram [ 1,024][ 1,024]
CC0E C9C00-CBFFF ╚═DOS Unusable [ 9,216][ 9,216]
CC10 CC110-CC54F LASTBYTE [DEV] 1,088 1,088
CC55 CC560-CD5BF ANSI [DEV] 4,192 4,192
CD5C CD5D0-CD6CF CLOCK [ENV] 256 256
CD6D CD6E0-CD88F CLOCK [TSR] 432 432
CD89 CD8A0-EFFEF [∙∙∙Free∙∙∙] [141,136] [141,136]
EFFF F0000-FFFFF Shadowed 8-bit AMI Bios Main Bios 65,536
─────── ─────── ───────
Upper Memory In Use: 5,968 0 235,344
[Free Upper Memory]: 141,136 16,384 157,520
MCB Overhead: 352 n/a 352
[No HMA Configured] ─────── ─────── ───────
Total Upper Memory: 147,456 16,384 393,216
The following article provides an excellent definition of the
various kinds of memory, such as conventional, extended,
expanded, high, and upper. More important, however, is its
discussion of how various adapter cards make use of the upper
address space, and may provide some insight if you're having
problems getting The Last Byte Memory Manager to install
properly:
Barry Simon, "How to Get the Most from Your System's
High DOS Memory", PC Magazine, Vol. 9, No. 10 (May 29,
1990), pp. 347-358.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 7
CHAPTER 3 - LASTBYTE.SYS COMMAND LINE OPTIONS
During initialization, LASTBYTE.SYS scans upper memory looking
for Bios ROMs, the video display buffer, and adapter cards that
use some portion of the upper memory address space. Of the
upper memory available on your computer, the unoccupied portion
defaults to High-DOS memory, and the occupied portion defaults
to Bank-Switch memory.
These defaults can be modified by the use of command line
options. There are several command line options for
LASTBYTE.SYS. Many of these use a format like:
<keyword>=<base>:<size>
where <keyword> is one of the option keywords and may be
abbreviated by its first letter, <base> is a four-digit
hexadecimal segment address in the range A000 to FC00, and
<size> is a decimal number in kilobytes.
There are two restrictions on these options:
1. The base must be exactly 4 hexadecimal digits,
must lie at or above A000, and must be a multiple
of 0020 (512 bytes), and
2. The size must be in the range 1-384 kb.
The "multiple of 0020" requirement for the base is necessary to
be consistent with the resolution that The Last Byte Memory
Manager uses to organize high memory during initialization.
However, this requirement is often affected by the much coarser
resolution used by most memory controllers.
The upper area is partitioned into blocks. Some controllers use
16k blocks, some use 32k blocks, and some use 64k blocks. Each
block must be either totally enabled or disabled. I.e., if any
part of a block's address space is disabled by the presence of
an adapter card, the entire block of memory is disabled and
cannot be made available as High-DOS Memory.
3.1 BANKSWITCH=<base>:<size>
Forces a region of upper memory that would normally be used as
High-DOS memory to be made available as Bank-Switch memory.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 8
┌─────────────────────────────────────────────────┐
│ This option requires a memory controller chip. │
└─────────────────────────────────────────────────┘
3.2 CACHE=<kbytes>
Forces LASTBYTE.SYS to think that there is a cache between the
CPU and main memory and to set its size. (This has nothing to
do with disk caching!) This option is not normally necessary;
LASTBYTE.SYS normally will automatically detect the presence of
a cache and its size.
Activating bank-switch memory causes the contents of a cache (if
present) to be invalid; this is known as a "cache coherency"
problem. If a cache is detected during installation,
LASTBYTE.SYS checks to see if any portion of the upper address
space is cached. If not, then no cache coherency problem
exists.
If the upper address space is cached, however, LASTBYTE.SYS will
flush the cache on every access to Bank-Switch memory in order
to prevent the cache from providing invalid data to the CPU.
The cache is flushed by filling it from low memory. The <size>
value is used to determine how much to fill.
3.3 DOS=<base>:<size>
Forces a region of upper memory that would normally be used as
Bank-Switch memory to be made available as High-DOS memory.
3.4 EXCLUDE=<base>:<size>
Forces a region of upper memory unavailable as either High-DOS
or Bank-Switch memory.
3.5 KEY=<AccessKey>
When you register The Last Byte Memory Manager, you are given an
access key that is derived from the spelling of your name. This
eight character key should be specified using this option, as
in:
KEY=12345678
This option must be used in conjunction with the NAME option
discussed below.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 9
3.6 MOVE=VIDEOBIOS
Tries to move an EGA or VGA bios to a better location within the
available upper memory in order to reduce fragmentation of free
memory.
3.7 MOVE=MAINBIOS
Tries to move the main bios to a better location within the
available upper memory in order to reduce fragmentation of free
memory.
3.7.1 The ADDHOLES suboption
MOVE=MAINBIOS,ADDHOLES will create seven holes in the residual
8k left at FE00 for a total of more than 3k.
3.8 MOVE=OVERLAY
This option is for chipsets in which the main bios shadow ram
cannot be made read/write (ETEQ, OPTi, Intel, and some by
VLSI). This option puts that ram in write-only mode, copies the
video bios on top of the main bios initialization code at the
beginning of the bios, then returns the ram to read-only mode.
Then the old video bios region is converted to usable Hi-DOS
memory.
3.9 MOVE=XBDA
This option relocates the Extended Bios Data Area (XBDA), if it
exists, into Upper Memory. The XBDA is usually 1k reserved at
the top of conventional memory by the main Bios. Not all
machines use an XBDA, but if it exists, LASTBYTE.SYS will report
639k of Conventional Memory instead of 640k, and the advanced
utility HIGHAPND will refuse to append any memory. Some
machines may not operate properly with a relocated XBDA, so use
this option with caution. (Note that some computer viruses also
"steal" the top 1k of memory.)
3.10 NAME=<RegisteredUserName>
When you register The Last Byte Memory Manager, you are given an
access key that is derived from the spelling of your name. This
option is used to specify your name as used to generate that
key, as in:
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 10
NAME=Daniel_W._Lewis
┌─────────────────────────────────────────────────┐
│ Note: Spaces MUST be indicated by underscores! │
└─────────────────────────────────────────────────┘
This option should be used in conjunction with the KEY option
discussed earlier.
3.11 PHYSICAL=<MemoryController>
Used to specify the memory controller determined by the CHIPSET
program.
3.11.1 The OVERRIDE suboption
Many memory controller chips can relocate all or part of shadow
ram to the top of (extended) memory. If LASTBYTE.SYS fails to
install with the error message:
"Shadow Ram memory relocated - Use OVERRIDE option"
try adding the OVERRIDE suboption to the PHYSICAL option, as in:
PHYSICAL=82C212,OVERRIDE
This disables any shadow ram relocation that may be in effect,
regardless of your CMOS configuration menu setup. The CMOS
setup menu of your BIOS may also provide an option to disable
relocation directly, but there are some that determine whether
to relocate or not based on other configuration options.
3.11.2 The NOEMS suboption
May be used in conjunction with PHYSICAL=LIM4EMS or EEMS to use
the 64k page frame as High-DOS Memory, as in:
PHYSICAL=LIM4EMS,NOEMS
The NOEMS suboption must be used in conjunction with
PHYSICAL=LIM3EMS (i.e., PHYSICAL=LIM3EMS,NOEMS). Doing so
disables other (normal) use of all expanded memory.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 11
3.12 RESTRICT=<ab> <cd> <ef>
Address lines A15 and A16 are not latched in hardware design of
the AT bus. As a consequence, some 16-bit adapter cards do not
properly decode these address lines within the narrow time
constraints imposed by the Address Latch Enable (ALE) signal,
and will occassionally respond to a memory access that is
directed at some other portion of the address space. Thinking
that it is for them, they force the transfer into 16-bit mode
even though the intended recipient requires 8-bit mode, and thus
cause erroneous data to be transferred to the bytes in the
odd-numbered addresses.
The most common (and damaging) occurence occurs during the 8-bit
DMA transfers between a floppy disk drive and upper memory near
the address space occupied by an offending 16-bit adapter card.
Due to organization of the address signals on the AT bus, this
phenomena only occurs when the two address areas are within the
same 128k region. There are three such regions in the upper
area: A0000-BFFFF, C0000-DFFFF, and E0000-FFFFF. LASTBYTE.SYS
automatically senses the presence of 16-bit adapter cards in
each of these three regions and records this information within
its resident image for use by its utilities. LASTBYTE.SYS skips
this test if it detects a PC with a Micro Channel bus (like the
PS/2) since problem was corrected in its design.
The RESTRICT option is provided to override this automatic
detection of 16-bit adapters. Each of the three arguments (one
per 128k region) should be replaced by either "0" (indicating no
16-bit adapters), or "1" (indicating the presense of a 16-bit
adapter) and separated by commas.
For example, the option RESTRICT=1,1,0 would imply that one or
more 16-bit adapters are located in the first two 128k regions
of upper memory (A000-DFFF), so that when the companion
/RESTRICT option of HIGHDRVR, HIGHTSR, or HIGHUMM is used, only
High-DOS memory in the region E000-FFFF will be allocated.
(Note: The /RESTRICT option is also supported by the advanced
utilities HIGHEMS3, and HIGHEMS4. The default operation of the
advanced utility HIGHBFRS is /RESTRICT, but this may be disabled
by use of its /NORESTRICT option.)
3.13 SHADOW=<base>:<size>
The Last Byte Memory Manager will automatically copy the video
bios and main bios to shadow ram if they aren't already
shadowed. However, it will not do so for other adapter ROMs.
This is because some controllers "hide" a small RAM by
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 12
overlaying it in a portion of the same address space they
declare as being filled with ROM. Such a RAM is no longer
accessible when the ROM is shadowed, usually causing the adapter
to stop functioning.
This option is for those who want to forces a region of memory
(presumably ROM) to be copied into shadow ram. If other
hardware is detected outside the specified region, but within
the same memory controller block which conflicts with this
request, a corresponding error message will be displayed and
LASTBYTE.SYS will not be installed.
┌─────────────────────────────────────────────────┐
│ This option requires a memory controller chip. │
└─────────────────────────────────────────────────┘
3.14 TEXT=<Attribute>
The information screen invoked by the "?" option defaults to
bright white on blue if a color display is active, and to
inverse video if a monochrome monitor is active. This option
changes the default to the parameter value specified, where
<Attribute> is the hexadecimal value of the attribute byte used
to paint the screen.
3.15 The ? (question mark) Option
Causes LASTBYTE.SYS to erase the screen, display a summary of
what it finds in the upper memory area, and pause for two
seconds to give the user an opportunity to read the
information. To freeze this display for a longer period, press
<Ctrl>-S; then to continue with CONFIG.SYS processing, press any
key.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 13
CHAPTER 4 - HIGHDRVR AND HIGHTSR COMMAND LINE OPTIONS
HIGHDRVR is a device driver that is used to load other device
drivers into upper memory. HIGHTSR is a program that is used to
load TSR programs into upper memory. Both utilities use most of
the same command line options as discussed in the sections that
follow.
4.1 HIGHDRVR Command Line Syntax
The command line syntax of the CONFIG.SYS line for HIGHDRVR is:
DEVICE=[path]HIGHDRVR.SYS [options] <filespec> [options]
where '<filespec>' is the filename of the device driver to be
loaded high, optionally prefixed by a drive and directory
specifcation. The filespec may be preceded by one or more
options, and followed by options at the end of the command line
as required by the particular driver to be loaded.
When HIGHDRVR searches the disk for the device driver to load,
it follows the following search strategy:
1. If '<filespec>' includes a drive or directory
specification, this will be the only place that
HIGHDRVR will look.
Otherwise, HIGHDRVR will search for the driver in:
2. The current (root) directory, and then
3. The same directory where HIGHDRVR was found.
4.2 HIGHTSR Command Line Syntax
The command line syntax for HIGHTSR is:
[path]HIGHTSR [options] <filespec> [options]
where '<filespec>' is the filename of the TSR program to be
loaded high, optionally prefixed by a drive and directory
specifcation. The filespec may be preceded by one or more
options, and followed by options at the end of the command line
as required by the particular TSR to be loaded.
When HIGHTSR searches the disk for the device driver to load, it
follows the same strategy that MS-DOS uses when loading
programs:
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 14
1. If '<filespec>' includes a drive or directory
specification, this will be the only place that
HIGHTSR will look.
Otherwise, HIGHTSR will search for the TSR program in:
2. The current directory, and then
3. Those directories given by the PATH environment
variable.
HIGHTSR may also be used with the MS-DOS "INSTALL=" directive of
a CONFIG.SYS file.
4.3 The /SIZE Option
The amount of High-DOS memory required to load a device driver
or TSR is the larger of two amounts: (1) the amount required
during initialization and (2) the final resident requirement
once installed. Either or both of these may be greater than or
equal to the size of the file.
Most device drivers and TSR's require more memory for
initialization than when resident, although there are a few
(such as SMARTDRV.SYS and NANSI.SYS) which require extra
resident memory for buffers, etc. The normal operation of
HIGHDRVR and HIGHTSR is to use the largest free High-DOS memory
block to load the software since the resident memory requirement
cannot be determined until after the software has been loaded
and initialized.
Unfortunately, this can lead to a less than optimum use of
memory. If the memory requirements were known, then a memory
block could be selected using a "best fit" strategy; i.e., the
smallest free High-DOS memory block which is larger than or
equal to the load requirement. This usually results in much
better utilization of memory.
4.4 Measuring Load Requirements Using /SIZE
If inserted on the command line of HIGHTSR or HIGHDRVR as shown
below:
HIGHTSR /SIZE PRINT /D:PRN
-or-
DEVICE=HIGHDRVR.SYS /SIZE ANSI.SYS
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 15
then both the initialization and resident requirements will be
displayed on the console after the software has been loaded and
initialized.
4.5 Achieving Best Fit Using /SIZE:n1
The larger of the initialization and resident requirements may
be specified with the /SIZE option to force a "best fit"
allocation. For example:
HIGHTSR /SIZE:17120 PRINT.EXE /D:PRN
-or-
DEVICE=HIGHDRVR.SYS /SIZE:12032 ANSI.SYS
4.6 Borrowing Memory Using /SIZE:n1 n2
Usually the resident requirement is less than the initialization
requirement. If there isn't enough free High-DOS memory to
satisfy the initialization requirement, but there is enough for
the resident requirement, then you may still be able to load
your software by adding a second parameter to the /SIZE option,
as in:
HIGHTSR /SIZE:16208,5776 PRINT /D:PRN
-or-
DEVICE=HIGHDRVR.SYS /SIZE:12032,4820 ANSI.SYS
In this example, the initialization requirement is specified by
the first parameter and is 16208 bytes; the resident requirement
is specified by the second parameter and is 5776 bytes. Note
that specifying the second parameter is not helpful unless the
resident requirement is less than the initialization
requirement.
When the second parameter is used, HIGHTSR first looks for a
free area larger than or equal to the initialization requirement
(the first parameter); if found, it simply loads the software in
this area and the second paramter is ignored. Otherwise,
HIGHTSR searches for a free area larger than or equal to the
resident requirement (the second parameter), and which has
"data" allocated immediately above it that can be temporarily
moved to create enough free memory to satisfy the initialization
requirement. Such "data" includes High-DOS memory used by the
advanced utilities HIGHDISK, HIGHEMS3, HIGHEMS4, HIGHSPLR,
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 16
HIGHKEY, and HIGMARK.
4.7 The /LOW Option
As noted earlier, TSR's and device drivers often require much
more memory during installation as compared to that required
once they are resident. This can prevent loading them into
High-DOS memory even if there's enough for the resident image
(but not enough for initialization).
The /LOW option can be used with some TSR's and device drivers
to get around this problem:
HIGHTSR /LOW APPEND
-or-
DEVICE=HIGHDRVR.SYS /LOW MYDRIVER.SYS
For example, the first example above loads a TSR (APPEND.EXE)
and initializes it in low (conventional) memory where there's
lots of room, then copies the (smaller) resident image up into
upper memory.
╔═════════════════════════════════════════════════╗
║ WARNING: The design of some software may pre- ║
║ vent the /LOW option from working properly. ║
║ Don't use it unless necessary, and then only ║
║ after you have tested it to be sure everything ║
║ works as expected. (For example, it will NOT ║
║ work with PRINT, SHARE, FASTOPEN, MODE, or ║
║ HyperDisk.) ║
╚═════════════════════════════════════════════════╝
4.8 The /RESTRICT Option
When used, this option restricts which 128k regions of upper
memory may be allocated for use with HIGHDRVR and HIGHTSR. For
a detailed discussion of why these regions may need to be
restricted and how to control the restrictions, see the
discussion of the RESTRICT option in the detailed description of
LASTBYTE.SYS.
4.9 The /!NOPAUSE Option
All of the utility programs (*.EXE files) that come with The
Last Byte Memory Manager support the command line option
/!NOPAUSE. This option eliminates the wait-for-keyboard pause
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 17
after an error message is displayed. When one of these programs
terminates with an error message, it also returns a non-zero
errorlevel which can be tested in batch files to make automatic
decisions about how to proceed. The /!NOPAUSE option simply
makes use of the errorlevel more practical.
4.10 The /NOENV Option (HIGHTSR only)
All programs, including TSR's, are allocated two regions of
memory when they are loaded: One is the area for the program
itself, and the other is for a copy of the environment. Most
TSR's don't make use of their environment, and some actually
release it to the operating system rather than hanging onto it.
If HIGHMEM finds an environment block, the corresponding entry
in the "Description" column will have the name of the TSR that
it belongs to (such as "CLOCK.EXE") followed by the indication
"[Env]". Occassionally, you may see a similar indication
"[Dat]"; this is a data block explicitly allocated by the TSR
for some unknown purpose.
┌─────────────────────────────────────────────────┐
│ The authors of some TSR's attempt to save a bit │
│ of memory by having the TSR eliminate its own │
│ Program Segment Prefix (PSP) during initializa- │
│ tion. Doing so makes it impossible to identify │
│ the TSR'senvironment block. However, this byte │
│ saving mentality will usually mean that the TSR │
│ initialization code also eliminates its environ-│
│ ment block, so this is rarely a problem. │
└─────────────────────────────────────────────────┘
If you see a block labelled "[Env]" in the output of HIGHMEM,
then you can use the /NOENV command line option of HIGHTSR to
release this block, even if the TSR didn't:
HIGHTSR /NOENV CLOCK
As noted earlier, some TSRs will release their environment
anyway and so you may be tempted to load them without using the
/NOENV option. This usually will create a "hole" in upper
memory since the TSR's environment is almost always allocated
just below the TSR itself. Use of the /NOENV option forces the
environment to be allocated down in conventional memory (where
it will be reclaimed later) so that the "hole" is eliminated.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 18
CHAPTER 5 - HIGHUMM.SYS: A UMB PROVIDER
HIGHUMM is a device driver that creates, and lets application
software use, Upper Memory Blocks (UMB's) in the upper memory
area via a standard protocol that is part of what is known as
the Extended Memory Specification (XMS). The number, size, and
location of UMB blocks vary widely depending upon the types of
hardware adapter cards resident within the upper address space.
If HIGHUMM is installed, you may use the DOS 5 DEVICEHIGH and
LOADHIGH commands as alternatives to HIGHDRVR and HIGHTSR.
HIGHUMM can also be used to advantage with other software such
as 4DOS, BUFFIT, WAS, and DOSMAX. These options are discussed
in the next chapter.
HIGHUMM may be installed in one of two ways:
1. If an XMS driver has not been loaded, HIGHUMM will
become a UMB-Only XMS device driver. All other
XMS functions will return failure, indicating that
the function is not implemented. For example,
DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
DEVICE=HIGHUMM.SYS
2. If an XMS driver (such as HIMEM.SYS) has already
been loaded, HIGHUMM will link into it, adding the
UMB functions. For example:
DEVICE=LASTBYTE.SYS {and any options}
DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS {and any options}
DEVICE=HIGHUMM.SYS
Do not install HIGHUMM using either HIGHDRVR or the DEVICEHIGH
command; simply use a DEVICE command, as shown above.
5.1 The /REPLACE Option
Although described in the XMS specification, most XMS device
drivers so not implement the UMB functions. If your XMS driver
happens to also be a UMB provider, HIGHUMM will abort with a
corresponding error message. You may then use the /REPLACE
option on the HIGHUMM.SYS command line to force it to take over
responsibility for providing UMBs.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 19
5.2 The /NOSPLIT Option
HIGHUMM requires that LASTBYTE.SYS be installed first. It
automatically loads itself into upper memory, putting much of
itself into Bank-Switch memory if available. (You can prevent
this by using the /NOSPLIT option.)
5.3 The /RESTRICT Option
When used, this option restricts which 128k regions of upper
memory may be allocated for use with HIGHUMM. For a detailed
discussion of why these regions may need to be restricted and
how to control the restrictions, see the discussion of the
RESTRICT option in the chapter on LASTBYTE.SYS.
5.4 Limiting UMB Memory
If you want to limit how much upper memory can be allocated by
HIGHUMM as UMB's, you can specify this in kbytes as an option on
the HIGHUMM.SYS command line, as in:
DEVICE=HIGHUMM.SYS 60
This provides a guarantee that some amount of upper memory will
never be allocated by HIGHUMM.SYS, and will thus still be
available for other uses.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 20
CHAPTER 6 - SPECIAL CONSIDERATIONS
6.1 Specifying Command Line Options with Indirect Files
Some of the device drivers and utility programs in The Last Byte
Memory Manager package may require lots of options to be
specified. To avoid lengthly command lines, these options can
be placed in a text file if the name of that file is specified
on the command line preceded by the '@' character. For example,
you'd begin to run out of room if all of the following options
were required on the LASTBYTE.SYS command line:
PHYSICAL=82C302 NAME=Joe_Blow KEY=12345678 APPEND=64 DOS=F000:32 ?
As an alternative, create a corresponding text file called
LASTBYTE.CFG (for example), and put the options into it:
PHYSICAL=82C302 NAME=Joe_Blow KEY=12345678 APPEND=64
DOS=F000:32 ?
(Carriage returns in the indirect file are treated as blanks)
Then the CONFIG.SYS command line becomes simply:
DEVICE=LASTBYTE.SYS @LASTBYTE.CFG
In effect, options taken from the indirect file are inserted
into the command line, so that one or more indirect file
references may be placed among other options on the command
line:
DEVICE=LASTBYTE.SYS ? @TLB.1 A=32 @C:\TLB\TLB.2
Indirect files may be used on the command line of any device
driver (.SYS files) or utility program (.EXE files) in The Last
Byte Memory Manager package.
6.2 Using the DOS=F000:32 Option
The 64k region starting at paragraph address F000 is the Bios
ROM. Many computers use a Bios ROM developed by AMI or
Phoenix. The more recent versions of these ROMs devote the
first 32k to initialization code that is only used during the
boot sequence, and use the second 32k for that portion that must
remain available at all times. (This seems to be true of the
Award Bios as well, but has not been verified.)
By the time your computer gets to the point in its boot sequence
where it is installing the device drivers (e.g., when it is
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 21
installing LASTBYTE.SYS), the Bios initialization code is no
longer needed. If you have one of these AMI or Phoenix Bios
chips, you can capture another 32k of upper memory by using a
DOS=F000:32 option on the LASTBYTE.SYS command line.
Of course, whenever you press Ctrl-Alt-Del to do a warm boot,
the ROM Bios initialization code needs to be executed again!
And that could be a problem since you've effectively disabled it
with the DOS=F000:32 option! Fortunately, LASTBYTE.SYS
intercepts all keyboard input and keeps an eye out for
Ctrl-Alt-Del. When it sees the warm boot request, it will force
a cold boot if you've used the DOS=F000:32 option. This
re-enables the entire 64k Bios ROM so that the initialization
code is reactivated before the processor tries to execute it.
Otherwise a normal warm boot is used.
╔═════════════════════════════════════════════════╗
║ WARNING: Some TSRs intercept keyboard interrupt ║
║ 9, and jump directly into a fixed location in ║
║ the Bios ROM where the Warm Boot code begins. ║
║ Unfortunately, this will bypass LASTBYTE.SYS's ║
║ attempt to turn the ROM back on. ║
╚═════════════════════════════════════════════════╝
6.3 Video Display RAM above 640k
In general, the region A0000-BFFFF is the video display buffer
area. Various display adapters (MDA, Hercules, CGA, EGA, and
VGA) typically use only a small subset of this space. The Last
Byte Memory Manager automatically senses what kind of video
display adapter is installed and reserves the space it uses.
The MDA (monochrome) adapter implements a 4k text buffer at
B0000-B0FFF, and the CGA (color) adapter implements a 16k text
and graphics buffer at B8000-BBFFF. The Hercules adapter uses
the entire 64k region at B0000-BFFFF in graphics modes, although
only the first 4k of this space (B0000-B0FFF) is used for text
modes.
The EGA and VGA adapters have a 64k graphics display buffer at
A0000-AFFFF, and a 32k text display buffer at either B0000-B7FFF
(when used with a monochrome display), or at B8000-BFFFF (when
used with a color display).
The following chart summarizes these regions as well as some of
the DOS and APPEND optons you may be able to use on the
LASTBYTE.SYS command line with these adapters. Unfortunately,
the ROM bios on a (very) few PC's may write into locations
outside the area reserved for a particular type of display. If
you decide this is happening, you may need to add one or more
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 22
EXCLUDE options to the LASTBYTE.SYS command line to disable that
region.
LASTBYTE.SYS Command Line Options for Display Adapters
Adapter Reserved DOS APPEND
------- -------- ------- -------
CGA B800:16 96
MDA B000:4 64
Hercules B000:64 B400:48 64
EGA/VGA A000:64 BC00:16 96
w/Color B800:32
Display
EGA/VGA A000:64 B400:16 64
w/Mono B000:32
Display
VGA Bios C000:32 C600:8 (see next section)
Notes: (1) Windows 3.0 may write in the region B000-BFFF.
(2) The ability to use the DOS and APPEND options
depends on the availability of memory in the
indicated region.
6.4 Video Adapter Bios ROMs
MDA and CGA use the standard ROM Bios; they have no ROM of their
own. EGA and VGA adapters, however, incorporate their own ROM
Bios chip right on the adapter card. LASTBYTE.SYS successfully
recognizes these ROMs, but has to treat VGA in a special manner:
The VGA adapter made by IBM has a 24k ROM installed at
C0000-C5FFF, which means that the 8k at C6000-C7FFF should be
usable. Although almost all VGA clones have a ROM signature
that indicates 24k, many of them use the C6000-C7FFF space for
ROM Bios or RAM extensions that provide their "Super VGA"
features. In particular, the Video7 and Paradise VGA's
incorporate their own RAM from C6000-C7FFF. (This may also be
true of other VGA boards that uses a VLSI chip manufactured by
Chips and Technologies, Tseng Labs, Paradise, or Headland
Technologies.) For this reason, when LASTBYTE.SYS finds
anybody's VGA adapter, it automatically assumes that there is a
32k ROM at C0000-C7FFF.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 23
6.5 LASTBYTE.SYS and Expanded Memory
Expanded memory always has an associated device driver. If that
driver is loaded before LASTBYTE.SYS in the CONFIG.SYS file (and
if the hardware is enabled) LASTBYTE.SYS will recognize the 64k
EMM page frame of the expanded memory and do the right thing: It
will treat the page frame like any other adapter ram and disable
the motherboard RAM that falls in the same address space so that
it doesn't interfere with the page frame. For example, if the
EMM driver is loaded first, LASTBYTE.SYS will report the 64k EMM
page frame as "EMS Page Frame".
This works fine, of course, but loading the EMM driver first
precludes the possibility of loading it into upper memory. To
get the EMM driver into upper memory means that it must be
loaded after LASTBYTE.SYS, but you must be careful!
If LASTBYTE.SYS is loaded first, the page frame will be
recognized only in two cases:
1. The page frame used by the expanded memory
controller built into some memory controller chips
will be recognized and reported as "EMS Page
Frame".
2. The page frame of a REAL expanded memory board is
(if enabled) recognized and reported as "Adapter
RAM".
In either case, LASTBYTE.SYS will not use that memory space.
╔═════════════════════════════════════════════════╗
║ WARNING: Some EMS boards must be enabled by ║
║ their device driver before they respond as ║
║ read/write memory. This prevents LASTBYTE.SYS ║
║ from recognizing them, and you may need a ║
║ BANKSWITCH option to keep LASTBYTE.SYS from ║
║ using the page frame memory space. ║
╚═════════════════════════════════════════════════╝
If you don't have an expanded memory board, but have used a
device driver (like EMM386) that EMULATES expanded memory using
extended memory, then LASTBYTE.SYS will not know about the page
frame unless the emulator is loaded first. If LASTBYTE.SYS is
loaded first, then you must use a EXCLUDE (not BANKSWITCH!)
command line option of LASTBYTE.SYS to reserve a 64k region
where the emulated page frame can be placed. For EMM386, the
page frame must be positioned at C000, C400, C800, CC00, D000,
D400, D800, DC00, or E000.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 24
6.6 Fine-Tuning your Adapter Hardware Configuration
Many adapter cards occupy some portion of the upper address
space. Some of these cards, such as SCSI Disk Controllers,
often have DIP switches or jumpers that can be used to set the
address space they occupy to one of a few alternatives.
If the memory map displayed by HIGHMEM is fragmented because one
of these adapters sits between two "....DOS Free" areas, you may
want to try to reposition the address space occupied by that
adapter by modifying the DIP switch or jumper settings on the
card.
Having one large free memory block is better than two smaller
ones because TSR's and device drivers almost always require more
memory during initialization than once installed. In other
words, neither of the two smaller blocks may be large enough for
the installation, but might if they were combined.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 25
CHAPTER 7 - USE WITH OTHER SOFTWARE
7.1 Microsoft's FASTOPEN and MODE programs
The FASTOPEN and MODE programs that come with MS-DOS are TSR's
and as such may be loaded into upper memory with HIGHTSR. Once
installed, each requires very little memory, something on the
order of 10k or less. However, neither will install unless a
lot of memory is available - approximately 50-90k. (The actual
requirement depends partly on command line options; you can
determine the requirement using the /SIZE option of HIGHTSR.)
╔═════════════════════════════════════════════════╗
║ WARNING: Do NOT use the /LOW option of HIGHTSR ║
║ with FASTOPEN or MODE - it won't work and could ║
║ damage data on your disk! ║
╚═════════════════════════════════════════════════╝
The worst part is that if FASTOPEN fails to install itself
successfully, it doesn't issue any error message - it simply
doesn't display the normal "FASTOPEN installed" sign-on
message. Moral: Let FASTOPEN and MODE be the first TSR's that
are installed into High Memory in your AUTOEXEC.BAT file so that
they get access to the maximum amount of memory.
The second hassle with these two TSR's is that they cannot be
removed by using the advanced utilities HIGHMARK and HIGHUNDO.
Evidently they modify memory other than that tracked by HIGHMARK
(the interrupt vector table and that memory allocated to them).
7.2 Microsoft's SHARE program
MS-DOS 4 installs the SHARE program automatically if you have a
hard disk which is greater than 32 MB in a single partition. It
does this without asking because it is otherwise possible to
corrupt the data on the disk when running programs that use the
old File Control Block (FCB) approach to access files.
Unfortunately, some internal parts of MS-DOS 4.0 also still use
FCB's! So don't try to prevent SHARE from being loaded by
removing it from your system! If MS-DOS can't find it, you'll
get a warning message during the boot saying that "SHARE should
be loaded for large media". You could load it during
AUTOEXEC.BAT processing, but you'll still get the warning
because the check occurs during CONFIG.SYS processing.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 26
┌─────────────────────────────────────────────────┐
│ NOTE: Version 5 of MS-DOS has corrected this │
│ problem and no longer loads SHARE automatically │
│ regardless of the size of your hard disk. │
└─────────────────────────────────────────────────┘
So how can you load this TSR into upper memory without getting
the warning? MS-DOS recently introduced the "INSTALL="
directive that allows TSR's to be installed during CONFIG.SYS
processing. Programs that Microsoft suggests be loaded in this
manner include FASTOPEN, KEYB, NLSFUNC, and SHARE. For example:
INSTALL=C:\DOS\SHARE.EXE
The above command, however, causes SHARE to be loaded down in
conventional memory. to get it into upper memory, use:
INSTALL=HIGHTSR.EXE C:\DOS\SHARE.EXE
╔═════════════════════════════════════════════════╗
║ WARNING: Do NOT use the /LOW option of HIGHTSR ║
║ with SHARE - it won't work and could damage ║
║ data on your disk! ║
╚═════════════════════════════════════════════════╝
7.3 Microsoft's MS-DOS 5.0
With the introduction of MS-DOS 5.0, Microsoft has added
extensive support for loading software into high memory. This
includes not only device drivers and TSRs, but also the MS-DOS
disk buffers, the master environment, and most of the operating
system itself.
Most of this capability requires the use of an Upper Memory
Block (UMB) provider such as Key Software Products'
HIGHUMM.SYS. Although the MS-DOS 5.0 version of EMM386 now
provides such support, there are several disadvantages to using
it instead of The Last Byte Memory Manager to load software
high:
1. EMM386 requires a 386 or better processor.
(HIGHUMM does not.)
2. EMM386 requires that HIMEM.SYS be loaded first.
(HIGHUMM does not. However, HIMEM is also needed
to load the operating system itself into extended
memory; The Last Byte Memory Manager allows you to
load HIMEM into upper memory using HIGHDRVR.)
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 27
3. Using HIMEM and EMM386 as the basis of UMB support
requires that both be loaded into conventional
memory.
4. EMM386 puts the processor into protected mode,
adding an instruction execution time penalty of
about 5%.
There are two basic approaches that you can take to load
software into upper memory using MS-DOS 5.0 and The Last Byte
Memory Manager. The first of these is to install HIGHUMM and
use the 'DEVICEHIGH' and 'LOADHIGH' commands introduced in
MS-DOS 5.0; the other is to use HIGHDRVR and HIGHTSR.
We recommend the latter approach because HIGHDRVR and HIGHTSR
provide a richer set of options for controlling the load high
process.
7.3.1 Using DEVICEHIGH and LOADHIGH
To use this approach, your CONFIG.SYS file should contain the
following lines:
DOS=HIGH,UMB
DEVICE=LASTBYTE.SYS {and any options}
DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS
DEVICE=HIGHUMM.SYS {and any options}
Then you can use the MS-DOS 5.0 DEVICEHIGH command in additional
lines of your CONFIG.SYS file to load your other device drivers
into upper memory, as in:
DEVICEHIGH={device driver to be loaded high}
DEVICEHIGH={device driver to be loaded high}
. . .
DEVICEHIGH={device driver to be loaded high}
With this CONFIG.SYS file, your AUTOEXEC.BAT file may load TSRs
high using the MS-DOS 5.0 LOADHIGH command as in:
LOADHIGH C:\DOS\PRINT
7.3.2 Using HIGHDRVR and HIGHTSR
The second approach is to use the HIGHDRVR and HIGHTSR utilities
of The Last Byte Memory Manager in the normal manner. To use
this approach, your CONFIG.SYS file should contain the following
lines:
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 28
DOS=HIGH
DEVICE=LASTBYTE.SYS {and any options}
DEVICE=HIGHDRVR.SYS C:\DOS\HIMEM.SYS
Then you can use HIGHDRVR in additional lines of your CONFIG.SYS
file to load your other device drivers into upper memory, as in:
DEVICE=HIGHDRVR.SYS {device driver to be loaded high}
DEVICE=HIGHDRVR.SYS {device driver to be loaded high}
. . .
DEVICE=HIGHDRVR.SYS {device driver to be loaded high}
With this CONFIG.SYS file, your AUTOEXEC.BAT file should load
TSRs high using HIGHTSR as in:
HIGHTSR C:\DOS\PRINT
7.4 Microsoft Windows
In general, The Last Byte Memory Manager has a high degree of
compatibility with Windows 3.0 and 3.1. If you are having
trouble running Windows, first be sure that your system is
properly configured so that it runs without The Last Byte Memory
Manager installed. If you have isolated the problem to their
combination, then perhaps the following information will help to
correct the problem:
7.4.1 Modifying the Windows SYSTEM.INI File
With Windows running in 386 enhanced mode, LASTBYTE.SYS and
Windows will both try to use the upper memory area, thus
creating a conflict. To avoid the conflict, you must ask
Windows to not use this region. This can be done with a few
configuration options in the [386Enh] section of the Windows
SYSTEM.INI file:
EMMExclude=A000-FFFF
HighFloppyReads=no
DualDisplay=yes
SystemROMBreakPoint=no
If you have used the EXCLUDE option of LASTBYTE.SYS to disable
any region of the upper memory, then Windows may be told it is
ok to use that area. For example, if LASTBYTE.SYS is loaded
using the line:
DEVICE=LASTBYTE.SYS EXCLUDE=D000:64
then you may use the following configuration option (in addition
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 29
to the EMMExclude option above) in your SYSTEM.INI file:
EMMInclude=D000-DFFF
The EMMInclude option will take precedence over the EMMExclude
option when the two overlap, as above.
7.4.2 Positioning an EMS Page Frame
If you are using the Real or Standard modes of Windows, you may
have installed an EMS device driver for those applications that
need expanded memory. In an attempt to reduce fragmentation of
upper memory, it is useful to position the EMS Page Frame either
at the bottom or top of an otherwise empty region of upper
memory. However, if you have used the DOS=F000:32 option to
gain another 32k of DOS memory, don't position your EMS Page
Frame at E800 - Windows will not run with it any higher than
E000.
The Enhanced 386 mode of Windows will automatically emulate
expanded memory for those applications that require it.
Unfortunately, Windows ignores the EMMExclude option and
positions the EMS page frame in upper memory. If the same 64k
area is used by The Last Byte Memory Manager for something else,
your system may hang. To correct the problem, add an
"EMSPageFrame=nnnn" option in your SYSTEM.INI file to tell
Windows where to put the page frame, combined with an
"EXCLUDE=nnnn:64" option on the LASTBYTE.SYS command line to
keep it from using this area.
7.4.3 "Unsupported Data Configuration"
The 386 Enhanced mode of Windows 3.0 (not 3.1) has a restriction
that it cannot run when certain types of software have been
loaded high. When this happens, Windows will terminate and
display the error message, "Unsupported Data Configuration".
This only happens in 386 Enhanced mode, and is not related in
particular to use of The Last Byte Memory Manager.
Device drivers that are known to load high without this problem
include HIMEM.SYS, MOUSE.SYS, SETVER.SYS, ANSI.SYS, and all the
Key Software Products device drivers. A device driver and a TSR
known to cause this problem are EGA.SYS and DOSKEY.COM. If you
are experiencing this error message, you can either run Windows
in another mode, or try modifying your CONFIG.SYS and
AUTOEXEC.BAT files to locate and remove the offending software.
Microsoft has removed this restriction in version 3.1 of
Windows.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 30
7.4.4 HIGHMEM and Windows 386 Enhanced Mode
MS-DOS applications run from inside Windows 3.0 are given their
own "virtual" address space of 640k. Windows tells the
processor to map memory references in this space to the
particular 640k of physical memory which has been allocated to
the application. References outside this range are considered
invalid and thus return garbage. Since HIGHMEM is a program
that inspects upper memory between 640k and 1 meg, there's no
way it can execute properly in this context. HIGHMEM will
behave normally outside of Windows.
7.5 HyperWare's HyperDisk
HyperDisk is a shareware disk caching utility. If you use its
"XS" option to load itself into the 48k block starting at E400,
be sure to exclude this area by using the following option on
the LASTBYTE.SYS command line:
DEVICE=LASTBYTE.SYS EXC=E400:48
A better approach is to use either HIGHDRVR or HIGHTSR (as
appropriate) to load HyperDisk high (without HyperDisk's "XS"
option). This method guarantees that the minimum amount of
upper memory will be used.
HyperDisk can be downloaded from HyperWare's BBS at (615)
864-6871, or obtained directly from:
HyperWare
RR#1, Box 91
Pall Mall, TN 38577
Voice: (615) 864-6868
FAX: (615) 864-6870
7.6 J.P. Software's 4DOS
4DOS is a shareware replacement for COMMAND.COM. HIGHUMM.SYS
may be used to move the 4DOS command processor and its master
environment into "Upper Memory Blocks" (UMB's) in the upper
memory area, thus reducing the amount of conventional memory
below 640k used by 4DOS from 3.4k bytes to 256 bytes.
First you must install HIGHUMM.SYS as described earlier in this
manual. Then add a "SHELL=" line to CONFIG.SYS for 4DOS,
including the options /U (to place the command processor in an
UMB) and /E:512U (to place the master environment in an UMB).
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 31
The value 512 is of course only an example - other environment
sizes may be specified. You may also want to specify these
options for secondary shells in the 4DSHELL environment
variable. Consult the 4DOS documentation for further details.
4DOS may be downloaded from Channel 1 BBS at (617) 354-8873, or
obtained directly from:
J.P. Software CompuServe: 75300,210
P.O. Box 1470 BIX: "trawson"
E. Arlington, MA 02174 Internet, Bitnet, etc:
Voice: (617) 646-3975 75300.210@compuserve.com
Fax: (617) 646-0904
7.7 David Hamilton's BUFFIT
There's a very nice shareware scroll-back TSR called BUFFIT that
saves lines of text that have been scrolled off the top of the
screen and allows you to pull them back down for review. One of
the advantages of version 3.0 and later of BUFFIT is that it
will load itself entirely into a UMB provided by HIGHUMM.SYS,
thus using no conventional memory at all.
To install BUFFIT into upper memory, first you must install the
HIGHUMM.SYS device driver by inserting the following lines in
your CONFIG.SYS file:
DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
DEVICE=HIGHUMM.SYS
Then all you have to do is reboot your computer and run BUFFIT
from the command line, or else add it to your AUTOEXEC.BAT
file.
BUFFIT is available from a number of BBS's, usually under the
filename BUFFIT30.ZIP.
7.8 Charles Lazo's WAS
On a computer with no expanded memory, you might want to use
HIGHEMS3 to provide some Expanded Memory for Charles Lazo's
scroll-back TSR, WAS.COM. This utility saves lines of text that
have been scrolled off the top of the screen and allows you to
pull them back down for review. WAS is available from a number
of BBS's, usually under the filename WAS062.ZIP.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 32
7.9 Philip Gardner's DOSMAX
DOSMAX is a set of utilities that compliment The Last Byte
Memory Manager by moving all of the DOS "subsegments" (BUFFERS,
FILES, FCBS, LASTDRIVE, STACKS, etc.), COMMAND.COM, and the DOS
kernel into Upper Memory Blocks provided by HIGHUMM. Set up
your CONFIG.SYS file as follows:
DOS=HIGH
DEVICE=C:\DOSMAX\STOPMAX.SYS
DEVICE=C:\TLBMM\LASTBYTE.SYS
DEVICE=C:\TLBMM\HIGHDRVR.SYS C:\DOSMAX\DOSMAX.EXE
DEVICE=C:\TLBMM\HIGHDRVR.SYS C:\DOS\HIMEM.SYS
DEVICE=C:\TLBMM\HIGHUMM.SYS /REPLACE
If you wish, you can eliminate the use of STOPMAX.SYS by
appending the /I+ or /B+ option to the DOSMAX.EXE command line.
Using the full pathname of DOSMAX.EXE (i.e.,
C:\DOSMAX\DOSMAX.EXE) is very important. The resident stub must
be able to exec DOSMAX.EXE at the proper time, and this requires
the full path to DOSMAX.EXE.
DOSMAX may be obtained from:
Philip B. Gardner
10461 Lever St.
Circle Pines, MN 55014
(612) 785-9439
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 33
APPENDIX 1 - HOW TO REACH US
The Key Software Products telephone (415-364-9847) is shared by
our BBS, FAX, and voice mail answering system. Approximate
hours of operation are:
Voice mail and FAX: 8am - 5pm PST (weekdays)
BBS system: 5pm - 8am PST (24 hrs on weekends)
BBS Parameters: 1200/2400/9600/14400 baud (v.32bis/v.42bis)
8 data bits, No Parity
If your call is answered by the voice mail system, it can take a
message that will be automatically forwarded to someone who can
return your call as soon as possible. In addition, it offers a
touch-tone driven menu of useful information about our product.
To send us a FAX, follow the following steps:
Step 1: You'll be greeted by out Voice Mail system
which will prompt you to press 1 if you have
a touch-tone phone.
Step 2: Press 1. You'll then hear a menu that prompts
you to press 5 to send a FAX.
Step 3: Press 5. In a few seconds, you'll hear a FAX
tone; press start on your FAX machine.
That's all there is to it. Be sure to include your FAX number
for the reply which will be sent back to you in one or two
days.
If you have access to electronic mail, you can send us a message
via any of the following:
On COMPUSERVE, send mail to:
>Internet:ksp!dan.lewis@ames.arc.nasa.gov
On PRODIGY, send mail to: VGDC59A
On INTERNET, UUCP, or BITNET, send mail to:
ksp!dan.lewis@ames.arc.nasa.gov
On FIDONET, send mail to: UUCP
1st line of message: To: ksp!dan.lewis@ames.arc.nasa.gov
On MCI,
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 34
At the "To:" prompt enter: DAN LEWIS (EMS)
At the "EMS:" prompt enter: Internet
At the "Mbx:" prompt enter: ksp!dan.lewis@ames.arc.nasa.gov
On APPLELINK, send mail to:
ksp!dan.lewis@ames.arc.nasa.gov@dasnet#
On TELENET's Telemail Service:
Send to: [INTERMAIL/USCISI]TELEMAIL/USA
1st line of message: Forward: ARPA
2nd line of message: To: ksp!dan.lewis@ames.arc.nasa.gov
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 35
APPENDIX 2 - ACKNOWLEDGEMENTS
The Last Byte Memory Manager wouldn't exist without all the
companies that manufacture the shadow ram memory controller
chips, and who have provided techinical information on how to
program their configuration registers. If you know of a memory
controller chip we haven't included, please let us know and we
will try to add it.
The Last Byte Memory Manager consists of almost a megabyte of
source code, written mostly in C with a sprinkling of assembly
language, and compiled using version 3.1 of the DeSmet/C-Ware C
compiler. We are grateful for the simplicity, flexibility, and
speed of this compiler, as well as the generous support provided
by Joel and Susan Farley of C-Ware Corporation.
The Last Byte Memory Manager could not have been created without
the gracious support of many people. We wish to thank the
following individuals who helped to test beta versions or
offered useful suggestions for new features: Ron Cohen, J.B.
Compton, David Durgee, Philip Gardner, Mike Hagerty, Scott
Jordahl, Alan Lambert, Rob Nee, Kevin Parris, Dan Proctor,
Graham Robertson, Ken Sanquist, Tony Sheehan, Peter Summers,
Steve Hodsdon, Anthony Cox, My Phung, Martin Beckmann, and Prof.
Timo Salmi (of the University of Vaasa, Finland).
Thank's also go to Tom Rawson of J. P. Software for providing a
copy of 4DOS, to Sue Nageotte of Digital Research for providing
a copy of DR DOS, to Philip Gardner for providing a copy of
DOSMAX, and to Pat Gelsinger of Intel Corporation for lending
his intimate knowledge of the 80x86 instruction sets. And
finally, a special thanks to Serge Caron, Roger Cross, and
Philip Gardner for their suggestions, technical advice,
patience, and friendship.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved
Aug 11, 1992 THE LAST BYTE MEMORY MANAGER (tm) 36
APPENDIX 3 - LIMITED WARRANTY
This software is provided 'as is' without warranty of any kind,
either expressed or implied, including, but not limited to the
implied warranties of merchantability and fitness for a
particular purpose. The entire risk as to the quality and
performance of the program is with you.
Some states do not allow the exclusion of implied warranties, so
the above exclusions may not apply to you. This warranty gives
you specific legal rights and you may also have other rights
which vary from state to state.
Key Software Products has taken due care in preparing the
documentation and software included in The Last Byte Memory
Manager to ascertain their correctness and effectiveness.
However, Key Software Products does not warrant that operation
of this software will be uninterrupted or error free. In no
event shall Key Software Products be liable for incidental or
consequential damages in connection with or arising out of the
furnishing, performance, or use of this software.
LICENSE
You MAY use this software on any computer or computers in your
possesion, but on no more than one computer at any given time.
You MAY copy this software into any machine readable or printed
form for backup or modification purposes in support of your use
of the software.
You MAY distribute the original unmodified, unlicensed version
of this software, but you may not charge a fee exceeding $5.00
to cover the cost of duplicating, shipping, and handling. You
may NOT distribute a licensed version of this software.
You may NOT use, copy, modify, sublicense, assign or transfer
this software and its license, or any copy or modification, in
whole or in part, except as expressly provided for in this
license.
Copyright (C) 1990-92, Key Software Products. All Rights Reserved